with Ada.Text_Io; use Ada.Text_Io;
with Dictionnaires;
with Ada.Real_Time; use Ada.Real_Time;

procedure Benchmark_Hash_Somme is

   Taille: constant Positive := 5;

   function Hash_Somme(Mot: String) return Natural is
      S: Natural := 0;
   begin
      for I in Mot'Range loop
         S:=S+Character'Pos(Mot(i));
      end loop;
      return S;
   end Hash_Somme;

   package Dico_Hash_Somme is new Dictionnaires(Taille, False, Hash_Somme);

   Fich: File_Type; -- fichier de test contenant un dictionnaire
   -- dictionnaire :
   Dhb: Dico_Hash_Somme.Dictionnaire := Dico_Hash_Somme.Cree_Dico;
   start, stop: Time;
begin

   start := Clock;

   declare -- un nouveau bloc
         S: String := "dico_enorme.txt";
   begin
      Open(Fich, In_File, S);
   exception
      when Name_Error => Put_Line("fichier inexistant !"); return;
   end;

   -- remplissage du dictionnaire avec 100000 éléments
   Dico_Hash_Somme.Remplit_Dico(Fich, Dhb);

   -- suppression de 100000 éléments
   Dico_Hash_Somme.Supprime_Mots(Fich, Dhb);

   Dico_Hash_Somme.Vider(Dhb);

   -- fermeture du fichier test
   Close(Fich);

   stop := Clock;
   New_Line;
   Put_Line("Temps d'exécution de benchmark_hash_somme : " & Integer'Image(Integer(To_Duration(stop - start))) & " secondes");

end Benchmark_Hash_Somme;
